﻿#pragma warning disable IDE1006
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WUDI.ECharts.AxisPointer
{
	/// <summary>
	/// 这是坐标轴指示器（axisPointer）的全局公用设置
	/// <para>
	/// 坐标轴指示器是指示坐标轴当前刻度的工具
	/// </para>
	/// <para>
	/// 如下例，鼠标悬浮到图上，可以出现标线和刻度文本
	/// </para>
	/// <para>
	/// 上例中，使用了 axisPointer.link
	/// </para>
	/// <para>
	/// #axisPointer.link 来关联不同的坐标系中的 axisPointer
	/// </para>
	/// <para>
	/// 一般来说，axisPointer 的具体配置项会配置在各个轴中（如 tooltip.axisPointer
	/// </para>
	/// <para>
	/// #tooltip.axisPointer）
	/// </para>
	/// <para>
	/// 但是这几个选项只能配置在全局的 axisPointer 中
	/// </para>
	/// <para>
	/// axisPointer.link
	/// </para>
	/// <para>
	/// #axisPointer.link
	/// </para>
	/// <para>
	/// 直角坐标系 single
	/// </para>
	/// <para>
	/// #single 中的每个轴都自己的 axisPointer
	/// </para>
	/// <para>
	/// 设置轴上的 axisPointer.show（例如 xAxis.axisPointer.show
	/// </para>
	/// <para>
	/// #xAxis.axisPointer.show）为 true，则显示此轴的 axisPointer
	/// </para>
	/// <para>
	/// 设置 tooltip.axisPointer.axis
	/// </para>
	/// <para>
	/// #tooltip.axisPointer.axis 改变这种选择
	/// </para>
	/// <para>
	/// 注意，轴上如果设置了 axisPointer，会覆盖此设置
	/// </para>
	/// <para>
	/// 设置轴上的 axisPointer.label.show（例如 xAxis.axisPointer.label.show
	/// </para>
	/// <para>
	/// #xAxis.axisPointer.show）为 true，则显示此轴的 axisPointer 的 label
	/// </para>
	/// <para>
	/// 设置 tooltip.axisPointer.type
	/// </para>
	/// <para>
	/// #tooltip.axisPointer.type 为 cross 时会自动显示 axisPointer 的 label
	/// </para>
	/// <para>
	/// 关于触屏的 axisPointer 的设置
	/// </para>
	/// <para>
	/// 设置轴上的 axisPointer.handle.show（例如 xAxis.axisPointer.handle.show
	/// </para>
	/// <para>
	/// #xAxis.axisPointer.handle.show 为 true 则会显示出此 axisPointer 的拖拽按钮
	/// </para>
	/// <para>
	/// （polar 坐标系暂不支持此功能）
	/// </para>
	/// <para>
	/// 如果发现此时 tooltip 效果不良好，可设置 tooltip.alwaysShowContent
	/// </para>
	/// <para>
	/// #tooltip.alwaysShowContent 为 true（效果为 tooltip 一直显示）
	/// </para>
	/// <para>
	/// 参见snap
	/// </para>
	/// <para>
	/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=line-tooltip-touch&amp;edit=1&amp;reset=1"/>，则 axisPointer 会自动吸附到最近的点上
	/// </para>
	/// </summary>
	public class AxisPointer
	{

		/// <summary>
		/// 组件 ID。默认不指定。指定则可用于在 option 或者 API 中引用组件。
		/// </summary>
		public dynamic id { get; set; } 

		/// <summary>
		/// 默认不显示
		/// <para>
		/// 但是如果 tooltip.axisPointer.axis
		/// </para>
		/// <para>
		/// #tooltip.axisPointer.axis 改变这种选择
		/// </para>
		/// </summary>
		public dynamic show { get; set; }  = false;

		/// <summary>
		/// 指示器类型。
		/// 可选
		/// line 直线指示器
		/// shadow 阴影指示器
		/// none 无指示器
		/// </summary>
		public dynamic type { get; set; }  = "line";

		/// <summary>
		/// 坐标轴指示器是否自动吸附到点上
		/// <para>
		/// 默认自动判断
		/// </para>
		/// <para>
		/// 这个功能在数值轴和时间轴上比较有意义，可以自动寻找细小的数值点
		/// </para>
		/// </summary>
		public dynamic snap { get; set; } 

		/// <summary>
		/// 坐标轴指示器的 z 值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖。
		/// </summary>
		public dynamic z { get; set; } 

		/// <summary>
		/// 坐标轴指示器的文本标签。
		/// </summary>
		public WUDI.ECharts.AxisPointer.Label label { get; set; } 

		/// <summary>
		/// axisPointer.type
		/// <para>
		/// #tooltip.axisPointer.type 为 line 时有效
		/// </para>
		/// </summary>
		public WUDI.ECharts.AxisPointer.LineStyle lineStyle { get; set; } 

		/// <summary>
		/// axisPointer.type
		/// <para>
		/// #tooltip.axisPointer.type 为 shadow 时有效
		/// </para>
		/// </summary>
		public WUDI.ECharts.AxisPointer.ShadowStyle shadowStyle { get; set; } 

		/// <summary>
		/// 是否触发 tooltip。如果不想触发 tooltip 可以关掉。
		/// </summary>
		public dynamic triggerTooltip { get; set; }  = true;

		/// <summary>
		/// 当前的 value
		/// <para>
		/// 在使用 axisPointer.handle
		/// </para>
		/// <para>
		/// xAxisPointer.handle 时，可以设置此值进行初始值设定，从而决定 axisPointer 的初始位置
		/// </para>
		/// </summary>
		public dynamic value { get; set; } 

		/// <summary>
		/// 当前的状态，可取值为 show 和 hide。
		/// </summary>
		public dynamic status { get; set; } 

		/// <summary>
		/// 拖拽手柄，适用于触屏的环境
		/// <para>
		/// 参见 例子
		/// </para>
		/// <para>
		/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=line-tooltip-touch&amp;edit=1&amp;reset=1"/>
		/// </para>
		/// </summary>
		public WUDI.ECharts.AxisPointer.Handle handle { get; set; } 

		/// <summary>
		/// 不同轴的 axisPointer 可以进行联动，在这里设置
		/// <para>
		/// 联动表示轴能同步一起活动
		/// </para>
		/// <para>
		/// 轴依据他们的 axisPointer 当前对应的值来联动
		/// </para>
		/// <para>
		/// 联动的效果可以看这两个例子
		/// </para>
		/// <para>
		/// 例子A
		/// </para>
		/// <para>
		/// <see href="https://echarts.apache.org/examples/zh/view.html?c=candlestick-brush&amp;edit=1&amp;reset=1"/>，{number} 转换结果
		/// </para>
		/// </summary>
		public dynamic link { get; set; } 

		/// <summary>
		/// mousemove
		/// <para>
		/// 鼠标移动时触发
		/// </para>
		/// <para>
		/// click
		/// </para>
		/// <para>
		/// 鼠标点击时触发
		/// </para>
		/// <para>
		/// none
		/// </para>
		/// <para>
		/// 不在 mousemove 或 click 时触发
		/// </para>
		/// </summary>
		public dynamic triggerOn { get; set; }  = "mousemove|click";

	}
}